package com.cskaoyan.javase.basic._1identifier;
/**
 * Java的标识符的命名规范
 * 中国人起名字上户口总不能叫"Michael"或者"Maria"吧。对于标识符而言，如果不符合下列语法要求，会直接编译报错。
 *
 * 语法上，标识符的开头必须是：
 * 字母（A~Z 和 a~z）
 * 下划线（_）
 * 美元符号（$）
 * Unicode 字符集中编号为0xC0以及它后面的所有符号
 *
 * 语法上标识符的组成必须是：
 * 数字（0~9）
 * 字母（A~Z 和 a~z）
 * 美元符号（$）
 * 下划线（_）
 * Unicode 字符集中编号为0xC0以及它后面的所有符号 OXC0表示一个十六进制数
 *
 * 标识符起名字，除了有语法要求，还有一些约定俗称的规范，这些规范是更加重要的。
 * 在计算机中，空格，制表，换行等这些，其实都是一个字符。都在ASCII码表中
 *
 * 接下来按照不同的结构，说明标识符的命名规范：
 * 注：规范的前提是遵守语法
 * 1.包名：
 *      在公司中，包名一般以反转公司域名做位开头，多级包名用"."隔开
 *      比如百度公司的项目，包名应该写com.baidu.xxx
 *      比如王道，包名应该写com.cskaoyan.xxx
 *      并且包名应该全部小写，尽量使用准确的英文单词，不要使用拼写（也不是不能用）
 *      除此之外，一级包名最好就只有一个单词
 *      而且这个单词应该是名词的单数（不要用复数）
 *      比如开发中写一个包用来表示工具类，直接写包名util即可
 *      不要用包名utils
 *
 *      注：为了让大家代码看得更加清楚，明确代码的学习顺序
 *      所以我在包名前加上序号1，2，3，4
 *      而标识符不能用数字开头，所以我会加一个下划线
 *      但是大家不要学习这种用法，在开发中用下划线开头写标识符是错误的！
 *
 * 2.类名，变量名，方法名
 * 驼峰命名法：指的是为多个单词组成的字符串命名的一种规则
 *      小驼峰式的命名法：
 *          如果多个单词组成字符串，首个单词的首字母小写，其余单词首字母大写
 *          比如myName，myJava，name
 *      大驼峰式的命名法：
 *          如果多个单词组成字符串，首个单词的首字母大写，其余单词首字母大写
 *          比如MyName，MyJava，Name
 *
 * 类名，变量名，方法名首先应当尽量使用正确的英语单词做完名字，不要用中文，不要用拼音，更不要混用。
 * 比如类名叫XueSheng，这都是错误的
 * 类名应该遵循大驼峰式的命名规范
 * 变量名，方法名应该遵循小驼峰式的命名规范
 * 最后名字应该“见名知意”，要赋予它们一个有含义的名字
 *
 * 约定：从今天开始，做作业，老师检查代码等场景，一旦发现代码命名不规范
 * 第一次私聊警告
 * 第二次直接惩罚（线上发红包，线下跑步
 *
 *
 * @since 14:46
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        int a = 10;
        // Non-ASCII characters in an com.cskaoyan.javase.basic._1identifier.
        // 言下之意是，建议用ASCII码表中的字符给标识符起名字
        int 长风;
        int 好きだ;

        int Class;

        int _;
        // 小写的"L"和1不要混用
        // 当然大写L无所谓
        int l1 = 11;
    }
}
// 错误的命名
class _{}
// 单词拼写错误
class Studnet{}